package com.stiff.common.service;


import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import redis.clients.jedis.JedisCluster;


@Service
public class RedisService {
    private static Log logger = LogFactory.getLog(RedisService.class);
    @Autowired(required = false)
    private JedisCluster jedisCluster;

    public String get(String key){
        return jedisCluster.get(key);
    }

    public String set(String key,String value){
        return jedisCluster.set(key,value);
    }
    public Long del(String key){
        return jedisCluster.del(key);
    }

    public Long expire(String key,Integer time){
        return jedisCluster.expire(key, time);
    }

    public String set(String key,String value,Integer time){
        String set = jedisCluster.set(key, value);
        jedisCluster.expire(key,time);
        return set;
    }

//    public <T> T execute(Function<T,JedisCluster> fun){
//        try {
//            return fun.callback(jedisCluster);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//    public String get(final String key){
//        return this.execute(new Function<String, JedisCluster>() {
//            @Override
//            public String callback(JedisCluster jedisCluster) {
//                return jedisCluster.get(key);
//            }
//        });
//    }
//
//    public Long set(String key,String value,int time){
//        jedisCluster.set(key,value);
//        return jedisCluster.expire(key,time);
//    }
//
//    public String set(final String key, final String value){
//        return this.execute(new Function<String, JedisCluster>() {
//            @Override
//            public String callback(JedisCluster jedisCluster) {
//                return jedisCluster.set(key,value);
//            }
//        });
//    }
//
//    public Long del(final String key){
//        return this.execute(new Function<Long, JedisCluster>() {
//            @Override
//            public Long callback(JedisCluster jedisCluster) {
//                return jedisCluster.del(key);
//            }
//        })
//    }
}